﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //XmlDocument xDoc = new XmlDocument();
            //xDoc.LoadXml("<RESPUESTA xmlns=''><RETORNO MENSAJE='Ticket 63465 reabierto OK' /></RESPUESTA>");
            //XmlElement retorno = xDoc.DocumentElement;

            ////if (retorno.SelectSingleNode("\\RETORNO\\MENSAJE") != null)
            //if (retorno.SelectSingleNode("RETORNO").Attributes["MENSAJE"] != null)
            //{

            //    string Mensaje = retorno.SelectSingleNode("RETORNO").Attributes["MENSAJE"].Value;
            //}
            //else
            //{
            //    if (retorno.SelectSingleNode("RETORNO").Attributes["ERROR"] != null)
            //    {

            //        string Mensaje = retorno.SelectSingleNode("RETORNO").Attributes["ERROR"].Value;
            //    }
            //}      
            try
            {
                ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
                CredentialCache cache = new CredentialCache();


                WsAlertasVisaService.WsAlertasVisaService servicio = new WsAlertasVisaService.WsAlertasVisaService();
                byte[] nBytes;
                string strFirmar = string.Empty;
                string firma = string.Empty;
                string banco = "153";
                string nroTarjeta = "4937870201009293";
                nroTarjeta = "4937870101106595";
                string descripcion = "Alerta de test";
                string celular = "099999999";
                // nroTarjeta = "110101089693";
                WSFirma.Firmar servicioFirma = new WSFirma.Firmar();

                //Prueba Alta
                if (false)
                {
                    nBytes = System.Text.Encoding.Default.GetBytes(banco + nroTarjeta + descripcion);
                    strFirmar = System.Convert.ToBase64String(nBytes);
                    firma = servicioFirma.FirmarTexto(strFirmar);
                    WsAlertasVisaService.ResultadoAltaTarjeta resultadoAltaTJ = servicio.altaTarjeta(banco, nroTarjeta, descripcion, firma);
                }

                //Prueba Celular
                if (false)
                {
                    nBytes = System.Text.Encoding.Default.GetBytes(banco + nroTarjeta + celular);
                    strFirmar = System.Convert.ToBase64String(nBytes);
                    firma = servicioFirma.FirmarTexto(strFirmar);
                    WsAlertasVisaService.ResultadoAltaCelular resultadoAltaCel = servicio.altaCelular(banco, nroTarjeta, celular, firma);
                }


                if (false)
                {
                    WsAlertasVisaService.Regla regla = new WsAlertasVisaService.Regla();
                    regla.descripcion = "Primera regla ingresada";
                    WsAlertasVisaService.Expresion expr = new WsAlertasVisaService.Expresion();
                    expr.idAtributo = 1;
                    expr.idOperador = 2;
                    expr.valor = "858";
                    regla.expresiones = new WsAlertasVisaService.Expresion[1];
                    regla.expresiones[0] = expr;

                    nBytes = System.Text.Encoding.Default.GetBytes(banco + nroTarjeta);
                    strFirmar = System.Convert.ToBase64String(nBytes);
                    firma = servicioFirma.FirmarTexto(strFirmar);
                    WsAlertasVisaService.ResultadoAltaRegla resultadoAltaRegla = servicio.altaRegla(banco, nroTarjeta, regla, firma);
                }

                if (true)
                {
                    nBytes = System.Text.Encoding.Default.GetBytes(banco + nroTarjeta);
                    strFirmar = System.Convert.ToBase64String(nBytes);
                    firma = servicioFirma.FirmarTexto(strFirmar);
                    WsAlertasVisaService.ResultadoConsultaTarjeta resultado = servicio.consultaTarjeta("153", nroTarjeta, firma);
                    //resultado.celulares Grabar todos los celulares
                    //resultado.emails Grabar todos los emails
                    resultado.reglas[0].expresiones[0].
                    int c = resultado.codigoError;
                }
            }
            catch (Exception ex)
            {
            }
            //  resultado.

        }
        public static bool ValidateServerCertificate(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
        {
            return true;
        }

        private string formatearRegla(WsAlertasVisaService.Regla regla)
        {
            string aTexto = regla.descripcion + arrayToString(regla.expresiones);
            return aTexto;
        }
        private String arrayToString(WsAlertasVisaService.Expresion[] stringarray)
        {
            String str = "";
            for (int i = 0; i < stringarray.Length; i++)
            {
                str = str + stringarray[i].idAtributo + stringarray[i].idOperador + stringarray[i].valor;
            }
            return str;
        }

        private String arrayToString(String[] stringarray)
        {
            String str = "";
            for (int i = 0; i < stringarray.Length; i++)
            {
                str = str + stringarray[i];
            }
            return str;
        }
    }
}
